package chang.singleton;

/**
 * 懒汉式单例 -- 线程安全
 * 加载时不创建，使用时创建
 * 同时考虑线程安全的问题
 */
public class LazySingletonSafe {
    private static volatile LazySingletonSafe data; // 模拟核心数据
    public LazySingletonSafe(){}
    // 数据使用时的方法
    public LazySingletonSafe getInstance(){
        if(null == data){
            synchronized(LazySingletonSafe.class){
                if(null == data){
                    data = new LazySingletonSafe(); // new对象
                }
            }
        }
        return data;
    }
}
